10 CLS
20 A$=" ":X=2:Y=3:L$="YES":M$="CHAR":SCREEN 0,0,0:CLS:DEF SEG:WIDTH 80:KEY OFF
30 CLS:PRINT STRING$(81,"*")+"                                Poster Printer                                "+STRING$(81,"*")
40 LOCATE 5,10:PRINT"1 - Horizontal =";X;"      "
50 LOCATE 7,10:PRINT"2 - Vertical   =";Y;"      "
60 LOCATE 9,10:PRINT"3 - Centered   = ";L$
70 LOCATE 11,10:PRINT"4 - Character  = ";M$;"      ";
80 FOR Z=1 TO LEN(A$):IF MID$(A$,Z,1)>="a" AND MID$(A$,Z,1)<="z" THEN MID$(A$,Z,1)=CHR$(ASC(MID$(A$,Z,1))-32)
90 NEXT Z
100 LOCATE 13,10:PRINT"5 - Message    = ";A$;SPACE$(80-28-LEN(A$))
102 LOCATE 15,10:PRINT"6 - Terminate"
110 BEEP:LOCATE 17,5:PRINT"Press number of item to change or 'P' to start printing->";:B$=INPUT$(1)
120 IF B$="1" THEN LOCATE 5,27:INPUT "",X:GOTO 40
130 IF B$="2" THEN LOCATE 7,27:INPUT "",Y:GOTO 40
140 IF B$="3" THEN LOCATE 9,27:IF L$="YES" THEN L$="NO" ELSE L$="YES"
150 IF B$="3" THEN PRINT L$;"  ";:GOTO 40
160 IF B$="4" THEN LOCATE 11,27:INPUT "",M$:IF M$="char" THEN M$="CHAR":GOTO 40
170 IF B$="4" THEN 40
180 IF B$="5" THEN LOCATE 13,27:INPUT "",A$:IF A$="" THEN A$=" ":GOTO 40:ELSE GOTO 40
182 IF B$="6" THEN END
190 IF B$<>"p" AND B$<>"P" THEN 110
200 G1=0:IF LEFT$(L$,1)="y" OR LEFT$(L$,1)="Y" THEN G1=1
210 A=ASC(LEFT$(A$,1))
220 FOR T=1 TO LEN(A$)
230 P$=MID$(A$,T,1)
240 FOR O=1 TO 50
250 READ S$:FOR Z=1 TO 7:READ S(Z):NEXT Z
260 IF P$=" " THEN 580
270 IF P$=S$ THEN 290
280 NEXT O
290 RESTORE
300 X$=M$
310 IF M$="CHAR" THEN X$=S$
320 FOR U=1 TO 7
330 FOR K=8 TO 0 STEP-1
340 IF 2^K<S(U) THEN 370
350 J(9-K)=0
360 GOTO 390
370 J(9-K)=1:S(U)=S(U)-2^K
380 IF S(U)=1 THEN 600
390 NEXT K
400 FOR T1=1 TO X
410 LPRINT TAB((37-4.5*Y)*G1/(LEN(X$))+1);
420 FOR B=1 TO F(U)
430 IF J(B)=0 THEN 460
440 FOR I=1 TO Y:LPRINT X$;:NEXT I
450 GOTO 500
460 FOR I=1 TO Y
470 FOR I1=1 TO LEN(X$)
480 LPRINT" ";:NEXT I1
490 NEXT I
500 NEXT B
510 LPRINT" "
520 NEXT T1
530 NEXT U
540 FOR H=1 TO 2*X:LPRINT" ":NEXT H
550 NEXT T
560 FOR H=1 TO 10:LPRINT" ":NEXT H
570 GOTO 10
580 FOR H=1 TO 7*X:LPRINT" ":NEXT H
590 GOTO 550
600 F(U)=9-K:GOTO 400
610 DATA " ",000,000,000,000,000,000,000
620 DATA A,505,037,035,034,035,037,505
630 DATA B,512,274,274,274,274,274,239
640 DATA C,125,131,258,258,258,131,069
650 DATA D,512,258,258,258,258,131,125
660 DATA E,512,274,274,274,274,258,258
670 DATA F,512,018,018,018,018,002,002
680 DATA G,125,131,258,258,290,163,101
690 DATA H,512,017,017,017,017,017,512
700 DATA I,258,258,258,512,258,258,258
710 DATA J,065,129,257,257,257,129,128
720 DATA K,512,017,017,041,069,131,258
730 DATA L,512,257,257,257,257,257,257
740 DATA M,512,007,013,025,013,007,512
750 DATA N,512,007,009,017,033,193,512
760 DATA O,125,131,258,258,258,131,125
770 DATA P,512,018,018,018,018,018,015
780 DATA Q,125,131,258,258,322,131,381
790 DATA R,512,018,018,050,082,146,271
800 DATA S,069,139,274,274,274,163,069
810 DATA T,002,002,002,512,002,002,002
820 DATA U,128,129,257,257,257,129,128
830 DATA V,064,065,129,257,129,065,064
840 DATA W,256,257,129,065,129,257,256
850 DATA X,388,069,041,017,041,069,388
860 DATA Y,008,009,017,481,017,009,008
870 DATA Z,386,322,290,274,266,262,260
880 DATA 0,125,131,262,274,322,131,125
890 DATA 1,000,261,259,512,257,257,000
900 DATA 2,261,387,322,290,274,267,261
910 DATA 3,066,130,258,274,266,150,100
920 DATA 4,033,049,041,037,035,512,033
930 DATA 5,160,274,274,274,274,274,226
940 DATA 6,193,289,305,297,293,291,194
950 DATA 7,258,130,066,034,018,010,008
960 DATA 8,069,171,274,274,274,171,069
970 DATA 9,263,138,074,042,026,010,007
980 DATA ?,005,003,002,354,018,001,005
990 DATA *,069,041,017,512,017,041,069
1000 DATA =,041,041,041,041,041,041,041
1010 DATA !,001,001,001,384,001,001,001
1020 DATA .,001,001,129,449,129,001,001
1030 END
